using System;
using Rdl;

namespace GTame.ReportParser
{

    public class MatrixType
    {

        private ActionType _Action;
        private string _Bookmark;
        private string _CellDataElementName;
        private MatrixTypeCellDataElementOutput _CellDataElementOutput;
        private ColumnGroupingsType _ColumnGroupings;
        private CornerType _Corner;
        private CustomPropertiesType _CustomProperties;
        private string _DataElementName;
        private MatrixTypeDataElementOutput _DataElementOutput;
        private string _DataSetName;
        private FiltersType _Filters;
        private Nullable<uint> _GroupsBeforeRowHeaders;
        private string _Height;
        private Nullable<bool> _KeepTogether;
        private string _Label;
        private MatrixTypeLayoutDirection _LayoutDirection;
        private string _Left;
        private string _LinkToChild;
        private MatrixColumnsType _MatrixColumns;
        private MatrixRowsType _MatrixRows;
        private string _NoRows;
        private Nullable<bool> _PageBreakAtEnd;
        private Nullable<bool> _PageBreakAtStart;
        private string _RepeatWith;
        private RowGroupingsType _RowGroupings;
        private StyleType _Style;
        private string _ToolTip;
        private string _Top;
        private VisibilityType _Visibility;
        private string _Width;
        private Nullable<uint> _ZIndex;
        private string nameField;

        public ActionType Action
        {
            get
            {
                if (_Action == null)
                    _Action = new ActionType();
                return _Action;
            }
            set
            {
                _Action = value;
            }
        }

        public string Bookmark
        {
            get
            {
                return _Bookmark;
            }
            set
            {
                _Bookmark = value;
            }
        }

        public string CellDataElementName
        {
            get
            {
                return _CellDataElementName;
            }
            set
            {
                _CellDataElementName = value;
            }
        }

        public MatrixTypeCellDataElementOutput CellDataElementOutput
        {
            get
            {
                return _CellDataElementOutput;
            }
            set
            {
                _CellDataElementOutput = value;
            }
        }

        public ColumnGroupingsType ColumnGroupings
        {
            get
            {
                if (_ColumnGroupings == null)
                    _ColumnGroupings = new ColumnGroupingsType();
                return _ColumnGroupings;
            }
            set
            {
                _ColumnGroupings = value;
            }
        }

        public CornerType Corner
        {
            get
            {
                if (_Corner == null)
                    _Corner = new CornerType();
                return _Corner;
            }
            set
            {
                _Corner = value;
            }
        }

        public CustomPropertiesType CustomProperties
        {
            get
            {
                if (_CustomProperties == null)
                    _CustomProperties = new CustomPropertiesType();
                return _CustomProperties;
            }
            set
            {
                _CustomProperties = value;
            }
        }

        public string DataElementName
        {
            get
            {
                return _DataElementName;
            }
            set
            {
                _DataElementName = value;
            }
        }

        public MatrixTypeDataElementOutput DataElementOutput
        {
            get
            {
                return _DataElementOutput;
            }
            set
            {
                _DataElementOutput = value;
            }
        }

        public string DataSetName
        {
            get
            {
                return _DataSetName;
            }
            set
            {
                _DataSetName = value;
            }
        }

        public FiltersType Filters
        {
            get
            {
                if (_Filters == null)
                    _Filters = new FiltersType();
                return _Filters;
            }
            set
            {
                _Filters = value;
            }
        }

        public Nullable<uint> GroupsBeforeRowHeaders
        {
            get
            {
                return _GroupsBeforeRowHeaders;
            }
            set
            {
                _GroupsBeforeRowHeaders = value;
            }
        }

        public string Height
        {
            get
            {
                return _Height;
            }
            set
            {
                _Height = value;
            }
        }

        public Nullable<bool> KeepTogether
        {
            get
            {
                return _KeepTogether;
            }
            set
            {
                _KeepTogether = value;
            }
        }

        public string Label
        {
            get
            {
                return _Label;
            }
            set
            {
                _Label = value;
            }
        }

        public MatrixTypeLayoutDirection LayoutDirection
        {
            get
            {
                return _LayoutDirection;
            }
            set
            {
                _LayoutDirection = value;
            }
        }

        public string Left
        {
            get
            {
                return _Left;
            }
            set
            {
                _Left = value;
            }
        }

        public string LinkToChild
        {
            get
            {
                return _LinkToChild;
            }
            set
            {
                _LinkToChild = value;
            }
        }

        public MatrixColumnsType MatrixColumns
        {
            get
            {
                if (_MatrixColumns == null)
                    _MatrixColumns = new MatrixColumnsType();
                return _MatrixColumns;
            }
            set
            {
                _MatrixColumns = value;
            }
        }

        public MatrixRowsType MatrixRows
        {
            get
            {
                if (_MatrixRows == null)
                    _MatrixRows = new MatrixRowsType();
                return _MatrixRows;
            }
            set
            {
                _MatrixRows = value;
            }
        }

        public string Name
        {
            get
            {
                return nameField;
            }
            set
            {
                nameField = value;
            }
        }

        public string NoRows
        {
            get
            {
                return _NoRows;
            }
            set
            {
                _NoRows = value;
            }
        }

        public Nullable<bool> PageBreakAtEnd
        {
            get
            {
                return _PageBreakAtEnd;
            }
            set
            {
                _PageBreakAtEnd = value;
            }
        }

        public Nullable<bool> PageBreakAtStart
        {
            get
            {
                return _PageBreakAtStart;
            }
            set
            {
                _PageBreakAtStart = value;
            }
        }

        public string RepeatWith
        {
            get
            {
                return _RepeatWith;
            }
            set
            {
                _RepeatWith = value;
            }
        }

        public RowGroupingsType RowGroupings
        {
            get
            {
                if (_RowGroupings == null)
                    _RowGroupings = new RowGroupingsType();
                return _RowGroupings;
            }
            set
            {
                _RowGroupings = value;
            }
        }

        public StyleType Style
        {
            get
            {
                if (_Style == null)
                    _Style = new StyleType();
                return _Style;
            }
            set
            {
                _Style = value;
            }
        }

        public string ToolTip
        {
            get
            {
                return _ToolTip;
            }
            set
            {
                _ToolTip = value;
            }
        }

        public string Top
        {
            get
            {
                return _Top;
            }
            set
            {
                _Top = value;
            }
        }

        public VisibilityType Visibility
        {
            get
            {
                if (_Visibility == null)
                    _Visibility = new VisibilityType();
                return _Visibility;
            }
            set
            {
                _Visibility = value;
            }
        }

        public string Width
        {
            get
            {
                return _Width;
            }
            set
            {
                _Width = value;
            }
        }

        public Nullable<uint> ZIndex
        {
            get
            {
                return _ZIndex;
            }
            set
            {
                _ZIndex = value;
            }
        }

        public MatrixType()
        {
            _GroupsBeforeRowHeaders = new Nullable<uint>[]();
            _KeepTogether = new Nullable<bool>[]();
            _PageBreakAtEnd = new Nullable<bool>[]();
            _PageBreakAtStart = new Nullable<bool>[]();
            _ZIndex = new Nullable<uint>[]();
        }

        public MatrixType Write()
        {
            // trial
            return null;
        }

    } // class MatrixType

}

